iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
Python

進擊的Python系列 第 12

Day12-可疊代(貝爾托特)

  • 分享至 

  • xImage
  •  

大家好!我是貝爾托特~我分享Python可疊代

https://ithelp.ithome.com.tw/upload/images/20240818/20163257W1Hkck5cY1.png
圖片來源:(https://www.sohu.com/a/437800551_120902643)

可疊代物件(iterable)

一種能夠逐一返回成員的物件。可以對其進行 迭代(iteration),也就是逐一取出元素

序列(Sequences)

  • 列表(list)元組(tuple)字串(string)

集合(Sets)

  • 集合(set)

字典(Dictionaries)

  • 字典(dict)

檔案(Files)

  • 檔案物件
# 列表
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    print(num)
    
# 輸出 
1
2
3
4
5

# 元組
fruits = ("apple", "banana", "cherry")
for fruit in fruits:
    print(fruit)
    
# 輸出 
apple
banana
cherry

# 字串
text = "hello, world!"
for char in text:
    print(char)
    
# 輸出 
h
e
l
l
o
,
 
w
o
r
l
d
!

# 字典(迭代鍵)
person = {"name": "Alice", "age": 30}
for key in person:
    print(key, person[key])
    
# 輸出 
name Alice
age 30

# 集合
my_set = {1, 2, 3, 2}
for item in my_set:
    print(item)
    
# 輸出 
1
2
3

# 檔案
with open("my_file.txt", "r") as file:
    for line in file:
        print(line)

自定義迭代器

為什麼可疊代物件很重要?

  • 簡化迴圈: 可使用 for 迴圈直接遍歷可疊代物件的元素
  • 通用性: 許多內建函數和第三方庫都接受可疊代物件作為參數,例如:sum()max()list()
  • 彈性: 可以自定義可疊代物件,實現複雜的迭代邏輯

如何判斷一個物件是否可疊代?

  • 使用 for 迴圈:如果可以成功使用 for 迴圈遍歷,該物件是可疊代的
  • 使用iter()函數:如果 iter(obj) 不引發異常,則 obj 是可疊代的

迭代器(Iterator)

從集合中逐一取得元素物件

  • iter()函數:可以將可疊代物件轉換為迭代器
  • next()函數:用於獲取迭代器的下一個元素
# 列表(list)
my_list = [1, 2, 3, 4, 5]
for item in my_list:
    print(item)

# 字串(string)
my_string = "Hello, world!"
for char in my_string:
    print(char)

# 字典(dict)
my_dict = {'name': 'Alice', 'age': 30}
for key in my_dict:
    print(key, my_dict[key])

# 自定義可疊代物件
class MyIterable:
    def __init__(self, start, end):
        self.start = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.start <= self.end:
            num = self.start
            self.start += 1
            return num   

        else:
            raise StopIteration

my_iterable = MyIterable(1, 5)
for num in my_iterable:
    print(num)

結論

可疊代物件是 Python 程式設計中非常重要的概念
理解可疊代物件、迭代器和產生器,可以幫助更有效地處理數據
自定義可疊代物件可以實現複雜的迭代邏輯


上一篇
Day11-類別(約翰)
下一篇
Day13-裝飾器(亞妮)
系列文
進擊的Python36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言